package com.hxkj.service;

import com.github.pagehelper.PageInfo;
import com.hxkj.domain.po.DictItem;
import com.platform.common.domain.result.ResultDataStruct;
import com.platform.common.domain.result.ResultMessageStruct;
import com.platform.common.domain.to.PageTo;

import java.util.List;

/**
 * 字典列表  二 级（子类） service
 *
 * @param
 * @param
 * @return
 * @throws Exception
 */
public interface DictItemService {
    /**
     * 从缓存中获取数据
     * 获取一个字典列表  二 级（子类）
     *
     * @param
     * @return
     * @throws Exception
     */
    //@Cached(name="dictItemCache", key="#dictTypeId", expire = 3600,cacheType = CacheType.REMOTE)
    PageInfo<DictItem> getDictItemList(DictItem dictItem, PageTo pageParam) throws Exception;

    /**
     * 从缓存中获取数据
     * 获取一个字典数据  二 级（子类）
     *
     * @param dictItem
     * @return
     * @throws Exception
     */
    //   @Cached(name="dictItemCache", key="#dictItemId", expire = 3600,cacheType = CacheType.REMOTE)
    ResultDataStruct getDictItemFromCache(DictItem dictItem) throws Exception;


    /**
     * 更新用户缓存
     * 修改一个字典数据  二 级（子类）
     *
     * @param DictItem
     */
    //@CacheInvalidate(name="dictItemCache.", key="#dictTypeId")
    ResultMessageStruct updateDictItem(DictItem DictItem);

    /**
     * 删除用户缓存
     * 删除一个字典数据  二 级（子类）
     *
     * @param dictItem
     */
    //@CacheInvalidate(name="dictItemCache.", key="#dictTypeId")
    ResultMessageStruct deleteDictItem(DictItem dictItem);

    /**
     * 增加字典
     * 增加一个字典数据  二 级（子类）
     *
     * @param dictItem
     */
    //@CacheInvalidate(name="dictItemCache.", key="#dictTypeId")
    ResultMessageStruct saveDictItem(DictItem dictItem);


    /**
     * 从缓存中获取数据
     *
     * @param dictItemId
     * @return
     * @throws Exception
     */
    //  @Cached(name="dictItemCache", key="#dictItemId", expire = 3600,cacheType = CacheType.REMOTE)
    // @CacheRefresh(refresh = 1800, stopRefreshAfterLastAccess = 3600, timeUnit = TimeUnit.SECONDS)
    DictItem getDictItemRefresh(Long dictItemId) throws Exception;


    /**
     * 禁用一个 二级 字典
     *
     * @param dictItem
     */
    // @CacheInvalidate(name="dictItemCache.", key="#dictItemId")
    ResultMessageStruct modifyDictItem(DictItem dictItem);

    /**
     * 获取一个字典下拉框  二 级（子类）
     *
     * @param
     * @return
     * @throws Exception
     */
    ResultDataStruct comboBox(DictItem dictItem) throws Exception;


    ResultDataStruct<List<DictItem>> getDictItemByDictType(DictItem dictItem) throws Exception;

}
